package cn.mumzone.pos.presenter.contract;

import java.util.List;

import cn.mumzone.basic.mvp.BasePresenter;
import cn.mumzone.basic.mvp.BaseView;
import cn.mumzone.pos.model.GoodsEntity;
import cn.mumzone.pos.model.MemberEntity;
import cn.mumzone.pos.model.ReserveOrderEntity;
import cn.mumzone.pos.model.ServerResultEntity;
import cn.mumzone.pos.model.ServiceEntity;

/**
 * Created by qiuzhenhuan on 2019/6/13.
 */

public interface OpenOrderContract {

    interface View extends BaseView {

        void showServiceAdded(ServiceEntity serviceEntity);

        void showServerList(ServerResultEntity serverResultEntity);

        void showAddReserveSuccess(ReserveOrderEntity reserveOrderEntity);

        void showDeleteSubReserveSuccess();

        void showCloseReserveSuccess();

        void showUpdateServerSuccess(String technicianId, String technicianName);

        void showAddMemberSuccess(MemberEntity memberEntity);

        void showSearchMemberSuccess(MemberEntity memberEntity);

        void showGoodsAdded(List<GoodsEntity> goodsEntityList);

        void showAddGoodsSuccess(boolean isModify);

        void showSettleSuccess();

        void showConfirmArrivedSuccess();

        void showReserveTimeChanged(String date);

        void showReserveDetail(ReserveOrderEntity entity);

        void showUpdateMemberSuccess(MemberEntity memberEntity);

        void showGoodsPriceChanged();

        void showServicePriceChanged();

        void showCheckResult(List<GoodsEntity> goodsEntities);

        void showSyncRemoteGoodsPrice(List<GoodsEntity> list);
    }

    interface Presenter extends BasePresenter<View> {

        void loadServerList(String updateType, String appointmentId, String appointmentTime, List<ServiceEntity> serviceList);

        void doAddReserve(String memberId, String username, String phone, List<ServiceEntity> serviceList);

        void doDeleteSubReserve(String subAppointOrderId);

        void doDeleteReserve(String appointmentId);

        void doUpdateReserveServer(String subAppointOrderId, String technicianId, String technicianName);

        void doQuicklyAddMember(String phone, String name, String gender, String level);

        void searchMember(String phone);

        void doConfirmArrived(String appointmentId);

        void loadReserveDetail(String id);

        void doUpdateReserveMember(String appointmentId,  MemberEntity memberEntity);

        void checkGoodInInventory(List<GoodsEntity> goodsEntities);

        void loadRemoteGoodsPrice(List<GoodsEntity> goodsEntities,MemberEntity memberEntity);
    }
}
